In communication systems an echo is the phenomenon wherein a delayed and distorted version of an original signal is reflected back to the source. In a telephone system, the echo causes impairment on the fidelity of the speech signals and is often detrimental to the users. For this reason, telephone systems are often provided with an echo canceller, which attempts to eliminate the echo. In order to do this, the echo canceller produces an echo replica based on an estimate of the signal path of the echo and subtracts it from the input signal. In FIG. 1, a received signal r(n) serves as the reference signal. This signal is emitted by the loudspeaker and picked up by the microphone as an echo signal along with the wanted signal. The echo generator produces an estimate of this signal e(n), which is subtracted from the input signal Sin(n) to produce an output signal Sout(n), which is the input signal with most of the echo component removed.
In a mobile telephone system, both background noise and the return echo are often high due to the mobile environment and high speaker volume, especially in a car. Because of this, the microphone is easily saturated, especially when the driver opens his window while driving on the highway. This creates so called “wind noise” scenario.
If the microphone becomes saturated for whatever reasons, the speech will be distorted, and it will no longer be possible to cancel the echo. The function of AGC (automatic gain control) is to reduce the microphone signal level if saturation occurs and increase the signal level when the condition that caused the saturation improves, such as the mobile phone being moved to another quiet room or the driver closing the window.
A critical issue with AGC control is that the gain variation should not be changed continuously, because of two constraints: Continuous signal level change may cause speech volume variation and the far-end listener to feels very uncomfortable. Continuous gain change on the microphone path will simulate path change to the acoustic echo canceller. The echo canceller does not work well if the echo path keeps changing.